package umacis.lwuitcomponent;

import java.util.Vector;

import com.sun.lwuit.events.DataChangedListener;
import com.sun.lwuit.events.SelectionListener;
import com.sun.lwuit.list.ListModel;

public class TreeListModel implements ListModel {
	
//	 private EventDispatcher dataListener = new EventDispatcher();
//	 private EventDispatcher selectionListener = new EventDispatcher();
	
	
	
	private Vector items;

//    private EventDispatcher dataListener = new EventDispatcher();
//    private EventDispatcher selectionListener = new EventDispatcher();
//        
    private int selectedIndex = 0;
    
    /** 
     * Creates a new instance of TreeListModel 
     */
    public TreeListModel() {
        this.items = new Vector();
    }

//    /** 
//     * Creates a new instance of TreeListModel 
//     * 
//     * @param items the items in the model
//     */
//    public TreeListModel(Vector items) {
//        this.items = items;
//    }
//
//    /** 
//     * Creates a new instance of TreeListModel 
//     * 
//     * @param items the items in the model
//     */
//    public TreeListModel(Object[] items) {
//        this.items = createVector(items);
//    }

//    private static Vector createVector(Object[] items) {
//        if (items == null) {
//            items = new Object[] {""};
//        }
//        Vector vec = new Vector(items.length);
//        for(int iter = 0 ; iter < items.length ; iter++) {
//            vec.addElement(items[iter]);
//        }
//        return vec;
//    }
//////////////////////////////////necessary methods//////////////////////////////////////
    /**
     * @inheritDoc
     */
    public Object getItemAt(int index) {
    	//System.out.println("index="+String.valueOf(index));
        if(index < getSize() && index >= 0){
            return items.elementAt(index);
        }
        return null;
    }

    /**
     * @inheritDoc
     */
    public int getSize() {
        return items.size();
    }

    /**
     * @inheritDoc
     */
    public int getSelectedIndex() {
        return selectedIndex;
    }
    
    /**
     * @inheritDoc
     */
    public void addItem(Object item){
        items.addElement(item);
        fireDataChangedEvent(DataChangedListener.ADDED, items.size());
    }
    
    /**
     * @inheritDoc
     */
    public void removeItem(int index){
        if(index < getSize() && index >= 0){
            items.removeElementAt(index);
            if(index != 0){
                setSelectedIndex(index - 1);
            }
            fireDataChangedEvent(DataChangedListener.REMOVED, index);
        }
    }
    
    /**
     * Removes all elements from the model
     */
    public void removeAll(){
        while(getSize() > 0) {
            removeItem(0);
        }
    }
    
    /**
     * @inheritDoc
     */
    public void setSelectedIndex(int index) {
        int oldIndex = selectedIndex;
        this.selectedIndex = index;
        fireSelectionEvent(oldIndex, selectedIndex);
    }

  ///////////////////////////////////////////optional///////////////////////////////////////////////////////  
//    /**
//     * Change the item at the given index
//     * 
//     * @param index the offset for the item
//     * @param item the value to set
//     */
//    public void setItem(int index, Object item){
//        items.setElementAt(item, index);
//        fireDataChangedEvent(DataChangedListener.CHANGED, index);
//    }
//
//    /**
//     * Adding an item to list at given index
//     * @param item - the item to add
//     * @param index - the index position in the list
//     */
//    public void addItemAtIndex(Object item, int index){
//        if (index <= items.size()) {
//            items.insertElementAt(item, index);
//            fireDataChangedEvent(DataChangedListener.ADDED, index);
//        }
//    }
    
    
    
    
    
    ////////////////////////////////////////////////////////////not needed hopefully/////////////////////////////////////////////////
    /**
     * @inheritDoc
     */
    public void addDataChangedListener(DataChangedListener l) {
       // dataListener.addListener(l);
    }

    /**
     * @inheritDoc
     */
    public void removeDataChangedListener(DataChangedListener l) {
        //dataListener.removeListener(l);
    }
    
    private void fireDataChangedEvent(final int status, final int index){
        //dataListener.fireDataChangeEvent(index, status);
    }

    /**
     * @inheritDoc
     */
    public void addSelectionListener(SelectionListener l) {
        //selectionListener.addListener(l);
    }

    /**
     * @inheritDoc
     */
    public void removeSelectionListener(SelectionListener l) {
       // selectionListener.removeListener(l);
    }

    private void fireSelectionEvent(int oldIndex, int newIndex){
        //selectionListener.fireSelectionEvent(oldIndex, newIndex);
    }
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
//	public void addDataChangedListener(DataChangedListener l) {
//		// 
//
//	}
//
//	public void addItem(Object item) {
//		// 
//
//	}
//
//	public void addSelectionListener(SelectionListener l) {
//		// 
//
//	}
//
//	public Object getItemAt(int index) {
//		// 
//		return null;
//	}
//
//	public int getSelectedIndex() {
//		// 
//		return 0;
//	}
//
//	public int getSize() {
//		// 
//		return 0;
//	}
//
//	public void removeDataChangedListener(DataChangedListener l) {
//		// 
//
//	}
//
//	public void removeItem(int index) {
//		// 
//
//	}
//
//	public void removeSelectionListener(SelectionListener l) {
//		// 
//
//	}
//
//	public void setSelectedIndex(int index) {
//		// 
//
//	}
//
//	public void removeAll() {
//		// 
//		
//	}

}
